www.gusucode.com > HookAPI开发包(Win32 API函数截拦)源码程序 > HookAPI开发包(Win32 API函数截拦)源码程序/谷速代码-code/HookAPI1.7/samples/to_test/MsgFltDll/mydll.cpp

    // ------------------------------------- //
// 您如果要使用本文件,请不要删除本说明  //
// ------------------------------------- //
//             HOOKAPI 开发例子          //
//   Copyright 2002 编程沙龙 Paladin     //
//       www.ProgramSalon.com            //
// ------------------------------------- //

#include "stdafx.h"
#include <stdio.h>

#include "mydll.h"
#include "util.h"
#include "filter.h"

HINSTANCE g_hInstance =NULL;
CMsgFilter g_Filter;

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
	g_hInstance =(HINSTANCE)hModule;

    return TRUE;
}

LRESULT WINAPI mySendMessageA(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(g_Filter.FilterSendMessage(hWnd, msg, wParam, lParam))
		return 0;
	return SendMessageA(hWnd, msg, wParam, lParam);
}

LRESULT WINAPI mySendMessageW(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(g_Filter.FilterSendMessage(hWnd, msg, wParam, lParam))
		return 0;
	return SendMessageW(hWnd, msg, wParam, lParam);
}

LRESULT WINAPI mySendDlgItemMessageA(HWND hWnd, int nId, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(g_Filter.FilterSendMessage(hWnd, msg, wParam, lParam))
		return 0;
	return SendDlgItemMessageA(hWnd, nId, msg, wParam, lParam);
}

LRESULT WINAPI mySendDlgItemMessageW(HWND hWnd, int nId, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(g_Filter.FilterSendMessage(hWnd, msg, wParam, lParam))
		return 0;
	return SendDlgItemMessageW(hWnd, nId, msg, wParam, lParam);
}

LRESULT WINAPI myPostMessageA(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(g_Filter.FilterPostMessage(hWnd, msg, wParam, lParam))
		return 0;
	return PostMessageA(hWnd, msg, wParam, lParam);
}

LRESULT WINAPI myPostMessageW(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(g_Filter.FilterPostMessage(hWnd, msg, wParam, lParam))
		return 0;
	return PostMessageW(hWnd, msg, wParam, lParam);
}

LRESULT WINAPI myCallWindowProcA(WNDPROC wndproc, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(g_Filter.FilterCallWindowProc(hWnd, msg, wParam, lParam))
		return 0;
	return CallWindowProcA(wndproc, hWnd, msg, wParam, lParam);
}

LRESULT WINAPI myCallWindowProcW(WNDPROC wndproc, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	if(g_Filter.FilterCallWindowProc(hWnd, msg, wParam, lParam))
		return 0;
	return CallWindowProcW(wndproc, hWnd, msg, wParam, lParam);
}

LONG WINAPI myDispatchMessageA(MSG *lpmsg)
{
	if(g_Filter.FilterDispatchMessage(lpmsg->hwnd, lpmsg->message, lpmsg->wParam, lpmsg->lParam))
		return 0;
	return DispatchMessageA(lpmsg);
}

LONG WINAPI myDispatchMessageW(MSG *lpmsg)
{
	//WriteLog("DispatchMessageW");
	if(g_Filter.FilterDispatchMessage(lpmsg->hwnd, lpmsg->message, lpmsg->wParam, lpmsg->lParam))
		return 0;
	return DispatchMessageW(lpmsg);
}

MYAPIINFO myapi_info[] =
{
	{"USER32.DLL", "CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM)", "myCallWindowProcA"},
	{"USER32.DLL", "CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM)", "myCallWindowProcW"},
	{"USER32.DLL", "SendMessageA(HWND, UINT, WPARAM, LPARAM)", "mySendMessageA"},
	{"USER32.DLL", "SendMessageW(HWND, UINT, WPARAM, LPARAM)", "mySendMessageW"},
	{"USER32.DLL", "SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM)", "mySendDlgItemMessageA"},
	{"USER32.DLL", "SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM)", "mySendDlgItemMessageW"},
	{"USER32.DLL", "PostMessageA(HWND, UINT, WPARAM, LPARAM)", "myPostMessageA"},
	{"USER32.DLL", "PostMessageW(HWND, UINT, WPARAM, LPARAM)", "myPostMessageW"},
	{"USER32.DLL", "DispatchMessageA(LPMSG)", "myDispatchMessageA"},
	{"USER32.DLL", "DispatchMessageW(LPMSG)", "myDispatchMessageW"},
	{NULL,NULL,NULL}
};

MYAPIINFO *GetMyAPIInfo()
{
	return &myapi_info[0];
}